package com.lin.cloud.disk.service.impl;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.lin.cloud.disk.document.CompanyStatusDocument;
import com.lin.cloud.disk.service.ICompanyStatusService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 公司状态流转表(CompanyStatus)表服务实现类
 *
 * @author ljc
 * @since 2021-01-22 14:58:18
 */
@Service
@Slf4j
public class CompanyStatusServiceImpl implements ICompanyStatusService {

    @Resource
    private MongoTemplate mongoTemplate;


    /**
     * 保存公司状态流转
     * @param companyStatus
     */
    @Override
    public void saveCompanyStatus(CompanyStatusDocument companyStatus){
        companyStatus.setId(IdWorker.getId());
        mongoTemplate.insert(companyStatus,CompanyStatusDocument.COLLECTION_NAME);
    }


    /**
     * 查询公司最后的状态信息详情
     * @param companyId
     * @return
     */
    @Override
    public CompanyStatusDocument findLastCompanyStatusInfo(Long companyId) {
        if (null == companyId){
            return null;
        }else {
            Query query = new Query();
            query.addCriteria(Criteria.where("companyId").is(companyId));
            query.with(Sort.by(Sort.Order.desc("createTime")));
            return mongoTemplate.findOne(query, CompanyStatusDocument.class, CompanyStatusDocument.COLLECTION_NAME);
        }
    }

    /**
     * 查看公司状态链路
     * @param companyId
     * @return
     */
    @Override
    public List<CompanyStatusDocument> findCompanyStatusTrace(Long companyId){
        if (null == companyId){
            return null;
        }else {
            Query query = new Query();
            query.addCriteria(Criteria.where("companyId").is(companyId));
            query.with(Sort.by(Sort.Order.desc("createTime")));
            return mongoTemplate.find(query, CompanyStatusDocument.class, CompanyStatusDocument.COLLECTION_NAME);
        }
    }

}